package com.guangyunl.b_array;

import java.util.Random;
import java.util.Scanner;
// 需求: 键盘录入一个整数，找出整数在数组中存储的索引位置
//方式二
public class Demo06_01FindIndex {
    public static void main(String[] args) {
        // 创建Scanner对象
        Scanner sc = new Scanner(System.in);
        // 创建Random对象
        Random rd = new Random();

        // 录入数组长度
        System.out.print("请输入创建数组的长度:");
        int arr1Len = sc.nextInt();
        // 读取并丢弃换行符
        sc.nextLine();
        // 定义数组
        int[] arr1 = new int[arr1Len];
        // 循环随机生成[0~100]的数组值
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = rd.nextInt(101);
        }
        // 循环遍历输出数组
//        for (int i = 0; i < arr1.length; i++) {
//            System.out.print(arr1[i] + "  ");
//        }
        // 增强型for循环
        // 这种循环的好处是简洁明了，不需要显式地指定迭代器或者数组下标，可以直接遍历所有元素。
        // 它在代码编写上更为简单和易读，尤其是在处理集合或数组元素的场景下，能够减少代码量和错误的可能性。
        // 无法获取索引或者元素位置
        for (int j : arr1) {
            System.out.print(j + "  ");
        }
        System.out.println();
        // 获取输入要查找的整数的索引
        System.out.print("请输入要查找的整数:");
        // 从键盘读取要查找的整数
        int target = sc.nextInt();
        // 读取并丢弃换行符
        sc.nextLine();
        // 初始化索引为-1，表示未找到
        int index = -1;

        // 遍历数组查找整数并记录索引
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] == target) {
                index = i;
                break; // 找到后退出循环
            }
        }
        // 输出结果
        if (index != -1) {
            System.out.println("整数 " + target + " 在数组中的索引位置是:" + index);
        } else {
            System.out.println("数组中未找到整数 " + target);
        }

        sc.close(); // 关闭 Scanner
    }
}

/*
请输入创建数组的长度:7
36  82  17  71  37  72  42
请输入要查找的整数:71
整数 71 在数组中的索引位置是:3
 */